﻿namespace KuiHuaBaoDian {

    public interface IDataValueProvider {

        bool HasMaxValue { get; }
        IDataValue MaxValue { get; }

        bool HasMinValue { get; }
        IDataValue MinValue { get; }

        IDataValue Zero { get; }
        IDataValue One { get; }
        IDataValue Ten { get; }
        IDataValue Fifty { get; }
        IDataValue Hundred { get; }
        IDataValue Thousand { get; }

        IDataValue NaN { get; }
        IDataValue PositiveInfinity { get; }
        IDataValue NegativeInfinity { get; }

        IDataValue From(string value);
        IDataValue From(double value);
        IDataValue From(float value);
        IDataValue From(int value);
        IDataValue From(uint value);

        IDataValue Clamp(IDataValue value, IDataValue min, IDataValue max);
        IDataValue Min(IDataValue a, IDataValue b);
        IDataValue Max(IDataValue a, IDataValue b);

        bool IsNegative(IDataValue value);

        bool IsPositive(IDataValue value);

        bool IsFinite(IDataValue value);
    }
}
